/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Produccion.Controlador;

import com.dp1.pucp.Modelo.Algoritmos.EmpleadoAlgoritmo;
import com.dp1.pucp.Modelo.Clases.Pedidoproduccion;
import com.dp1.pucp.Modelo.Clases.Simulacion;
import com.dp1.pucp.Produccion.DAO.ProduccionDAO;
import com.dp1.pucp.Produccion.Vista.AsignarPedidoProduccionGUI;
import com.dp1.pucp.Simulacion.DAO.SimulacionDAO;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Rodrigo
 */
public class AsignarPedidoProduccionControlador {
    
    private AsignarPedidoProduccionGUI asignarPedidoView;
    private Simulacion simulacionElegida;
    private ArrayList<Pedidoproduccion> lstPedidoProduccion;
    private DetalleSimulacionControlador controladorPadre;
    
    public AsignarPedidoProduccionControlador(AsignarPedidoProduccionGUI asignarPedidoView,Simulacion simulacionElegida,DetalleSimulacionControlador controladorPadre){
        
        this.asignarPedidoView=asignarPedidoView;
        this.simulacionElegida=simulacionElegida;
        this.controladorPadre=controladorPadre;
        this.asignarPedidoView.addAsignarPedidoListener(new asignarPedidosListener());
        //this.asignarPedidoView.addGuardarListener(new guardarListener());
        this.asignarPedidoView.addCerrarListener(new cerrarListener());
        this.simulacionElegida.setEstado(2);//entra a proceso de elegir pedidos
        SimulacionDAO daosimu = new SimulacionDAO();
        daosimu.guardarSimulacion(this.simulacionElegida);
        actualizarTabla();
    }
    
    private void actualizarListaPedidos(){
        ProduccionDAO dao= new ProduccionDAO();
        int estado=1;
        this.lstPedidoProduccion=dao.listarPedidoProduccionPorEstado(estado);
    }
    
    public void actualizarTabla(){
        
        actualizarListaPedidos();
        this.LimpiarDatos();     
        asignarPedidoView.llenaGrilla(this.lstPedidoProduccion);
    }
    
    class asignarPedidosListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            int indice=-1;
            indice = asignarPedidoView.getFilaSelPedido();
            if (indice!=-1){
                if (asignarPedidoView.solicitarConfirmacion("Desea Asignar este Pedido de Produccion") == 0) {
                ProduccionDAO dao = new ProduccionDAO();
                Pedidoproduccion pedido = dao.getPedidoProduccion(lstPedidoProduccion.get(indice).getIdpedidoproduccion());
                pedido.setSimulacion(simulacionElegida);
                dao.setSimulacionPedidoProduccion(pedido, simulacionElegida);
                actualizarTabla();
                }                
            } else {
                asignarPedidoView.mostrarError("Debe seleccionar un pedido de produccion");
            }            
        }
    }
    
    class cerrarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            asignarPedidoView.dispose();
            controladorPadre.setEstadoSimulacion(simulacionElegida.getEstado());
            
        }
        
    }
    
    class guardarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            
            
        }
        
    }
    
    public void LimpiarDatos() {
        ((DefaultTableModel) asignarPedidoView.getTabla().getModel()).setRowCount(0);
    }
    
    
}
